2020 정보처리기사 필기 요점 정리(1)-데이터베이스 구축(1)

JIGGLYPOP

염동환


새로운 개발을 좋아하는 개발자

2020-01-01 05:00 시에 저장한 글입니다.

논리 데이터베이스 설계

1. 데이터베이스 설계

  • 사용자의 요구를 분석하여 그것에 맞게 설계하고 특정 DBMS로 데이터베이스를 구현하여 사용자들이 사용하는 것
  • 데이터베이스 설계 순서(요구 조건 , 개념적, 논리적, 물리적, 구현)
  • 요구 조건 분석 → 개념적 설계 → 논리적 설계 → 물리적 설계 → 구현
  • 요구 조건 분석 : 요구 조건 명세서 작성
  • 개념적 설계 : 개념 스키마, E-R 모델, 트랜잭션 모델링
  • 논리적 설계 : 논리 스키마 설계 , 트랜잭션 인터페이스 설계
  • 물리적 설계 : 물리적 구조의 데이터로 변환
  • 구현 : DDL 로 데이터베이스 생성, 트랜잭션 작성
데이터베이스 설계 시 고려사항
  • 무결성, 일관성, 회복, 보안, 효율성, 데이터베이스 확장

데이터 모델의 개념


현실 세계의 정보들을 컴퓨터에 표현하기 위해서 단순화, 추상화하여 체계적으로 표현한 개념적 모형

데이터 모델의 구성 요소
  • 개체(Entity), 속성(Attribute), 관계(Relation)
데이터 모델의 종류
  • 개념적 데이터 모델, 논리적 데이터 모델, 물리적 데이터 모델
데이터 모델에 표시할 요소(구조, 연산, 제약 조건)
  • 구조(Structure) : 개체 타입들 간의 관계, 데이터 구조 및 정적 성질 표현
  • 연산(Operation) : 저장된 데이터를 처리하는 작업에 대한 명세, DB를 조작하는 기본 도구
  • 제약 조건(Constraint) : 데이터의 논리적인 제약 조건

데이터 모델의 구성 요소 - 개체, 속성, 관계

img*

데이터베이스의 표현하려는 정보

개체의 특징
  • 유형, 무형의 정보로서 서로 연관된 몇 개의 속성으로 이루어짐
  • 유일한 식별자에 의해 식별이 가능
  • 개체(튜플)의 수를 카디널리티라고 함
  • 개체 인스턴스 : 개체를 구성하고 있는 속성들이 값을 가져 하나의 개체를 나타내는 것. 개체 어커런스라고도 함
  • 자료 흐름도(DFD)를 통해 업무 분석을 했을 경우는 자료 저장소(Data Store)를 이용함.
속성의 정의

DB를 구성하는 가장 작은 논리적인 단위(데이터 항목 또는 데이터 필드)

(속성 = 차수= 디그리)

속성의 특징
  • 개체의 특성을 기술함
  • 속성의 수를 차수 혹은 디그리(Degree)라고 함
속성의 종류
  • 기본 속성 : 업무 분석을 통해 정의한 속성. 가장 많고 일반적 ex) 제품명
  • 설계 속성 : 업무상 존재하지 않지만 설계 과정에서 도출해내는 속성 ex) 제품 코드
  • 파생 속성 : 다른 속성으로부터 계산되거나 파생된 속성 ex) 제품 판매량, 판매 수익
속성의 분류
  • 기본키 속성(Primary Key Attribute) : 개체를 식별할 수 있는 속성 ex) 학번
  • 외래키 속성(Foreign Key Attribute) : 다른 개체와의 관계에서 포함된 속성
  • 일반 속성 : 개체에 포함되어 있지만 기본키, 외래키가 아닌 속성

img*

개체 간의 관계는 점선, 속성 간의 관계는 실선으로 표현

관계의 정의
  • 개체 간의 논리적인 연결
관계의 형태
  • 1:1, 1:N, N:M
식별 / 비식별 관계
  • 식별 관계 : A,B 개체 간의 관계에서 A 개체의 기본키가 B 개체의 외래키면서 동시에 기본인 것
  • 비식별 관계 : A,B 개체 간의 관계에서 A 개체의 기본키가 B 개체의 외래키이지만 기본키는 아닌 것

식별자


하나의 개체 내에서 각각의 인스턴스(구체적인 데이터 값)를 유일하게 구분 지을수 있는 것

식별자의 분류
  • 대표성 여부 : 개체를 유일하게 식별할 수 있음
  • 주 식별자(유일성, 최소성, 불변성, 존재성) : 개체를 대표하는 유일한 식별자 ex) 학번
  • 보조 식별자 : 주 식별자를 대신하여 개체를 식별할 수 있는 것 ex) 주민번호

img*

  • 스스로 생성 여부

    • 내부 식별자 : 개체 내에서 스스로 만들어지는 식별자
    • 외부 식별자 : 다른 개체와의 관계에서 만들어지는 식별자
  • 단일 속성 여부

    • 단일 식별자 : 주 식별자가 한 가지 속성으로 구성된 식별자
    • 복합 식별자 : 주 식별자가 두 개 이상의 속성으로 구성된 식별자
  • 대체 여부

    • 원조 식별자(=본질 식별자) : 업무에 의해 만들어지는 가공되지 않은 원래의 식별자
  • 대리 식별자(=대리 식별자) : 주 식별자의 속성이 두 개 이상인 경우 속성들을 하나의 속성으로 묶어 사용하는 식별자

E-R(개체-관계) 모델


E-R 모델의 개요
  • E-R 모델은 개념적 데이터 모델의 가장 대표적인 것
  • 피터첸에 의해 제안되어 기본적인 구성 요소가 적립
  • 데이터를 개체, 관계, 속성으로 묘사
E-R 다이어그램

E-R 모델의 기본 아이디어를 쉽게 기호를 사용하여 시각적으로 표현한 것

  • 피터 첸 표기법, 정보 공학 표기법
피터 첸 표기법
  • 사각형 : 개체 타입
  • 마름모 : 관계 타입
  • 타원 : 속성 타입
  • 이중 타원 : 복합 속성
  • 밑줄 타원 : 기본키 속성
  • 복수 타원 : 복합 속성
  • 관계 : 1:1, 1:N, N:M 같은 관계에 대한 대응 수

img*

교수와 학생이 1:N 관계

정보 공학 표기법
  • 관계 표시 기호

    | : 1, O : 0, < : N

img*

교수와 학생이 1:N 관계

관계형 데이터베이스의 구조


개체, 속성, 관계를 모두 표로 표현, 간결하고 보기 편하며 다른 데이터베이스로의 변환이 용이

관계형 데이터베이스의 구조
  • 튜플

    • 릴레이션을 구성하는 각각의 행
    • 튜플의 수를 카디널리티(Cardinality)라고 함
  • 속성

    • 데이터베이스를 구성하는 가장 작은 논리적인 단위
  • 개체의 특성을 기술

    • 속성의 수를 디그리(Degree) 또는 차수라고 함
  • 도메인

    • 속성이 취할 수 있는 값의 범위
    • ex) 학년의 도메인 : 1~4

img*

릴레이션의 특징
  • 튜플

    • 똑같은 튜플이 있을 수 없음. 모두 상이하다
  • 튜플에는 순서가 없음

    • 튜플의 삽입, 삭제로 인해 시간에 따라 변함
  • 속성

    • 속성의 명칭은 유일해야 하지만 속성을 구성하는 값은 다를 수 있음
  • 속성에는 순서가 없음

    • 속성들은 원자 값(Atomic-Value)를 가짐

관계형 데이터베이스의 제약 조건 - Key


key는 데이터베이스에서 조건에 맞는 튜플을 찾거나 정렬할 때 튜플을 서로 구분할 수 있는 기준이 되는 속성

Key의 종류
  • 후보키

    • 기본키로 사용할 수 있는 속성
    • 유일성과 최소성의 성질을 만족
  • 기본키

    • 후보 키 중에서 선정된 Main Key로 중복된 값을 가질 수 없음
    • 후보 키의 부분집합
    • NULL 값을 가질 수 없음(=개체 무결성), 정보의 부재를 나타내기 위해 사용하는 값. 0의 값이 아님
  • 대체키

    • 후보 키가 둘 이상일 때 기본키를 제외한 나머지 후보키
  • 슈퍼키

    • 한 가지 속성일 땐 Key가 될 수 없지만 여러 속성이 뭉쳐서 Key의 속성을 가짐
    • 유일성의 성질을 만족
  • 외래키

    • 다른 릴레이션의 기본 키를 참조한 것
    • 외래 키의 값은 참조한 릴레이션의 기본키 값과 동일해야 함(=참조 무결성)

img*

관계형 데이터베이스의 제약조건 - 무결성


무결성은 데이터베이스의 저장된 데이터 값과 그것이 표현하는 실제 값이 일치하는 정확성을 의미

무결성의 종류
  • 개체 무결성 : 기본키를 구성하는 어떤 속성도 NULL 값이나 중복 값이면 안됨
  • 도메인 무결성 : 속성의 값이 도메인에 속한 값이어야 함
  • 참조 무결성 : 외래 키의 값은 참조한 릴레이션의 기본키 값과 동일해야 함
  • 사용자 정의 무결성 : 속성 값들은 사용자가 정의한 제약 조건에 만족해야 함
무결성 강화
  • 애플리케이션

    • 무결성 조건을 검증하는 코드를 데이터를 조작하는 프로그램 내에 추가
    • 사용자 정의 같은 복잡한 무결성 조건의 구현이 가능
  • 데이터베이스 트리거

    • 트리거 : 데이터베이스 시스템에 이벤트가 발생할 때마다 자동으로 수행되는 절차형 SQL
  • 제약 조건

    • 데이터베이스 제약 조건을 설정하여 무결성을 유지

관계 대수 및 관계 해석


관계 데이터 언어
  • 관계 대수 : 관계형 데이터베이스에서 원하는 정보와 그 정보를 검색하기 위해 유도하는 것을 기술하는 절차적 언어
  • 관계 해석 : 관계 데이터의 연산을 표현하는 비절차적 언어
관계 대수의 연산자
  • Select(σ, σ<조건*(R), R은 릴레이션을 의미)

    조건을 만족하는 튜플을 구하여 새로운 릴레이션을 만드는 연산(수평 연산)

    • ex) σ평균*80 (성적) : 성적 릴레이션에서 평균값이 80 이상인 튜플을 구함

img*

  • Project(π, π<조건*(R))

    속성만 추출하여 새로운 릴레이션을 만드는 연산(=수직연산)

    연산 결과에 중복이 발생하면 제거

    • ex) π이름, 평균(성적) : 성적 릴레이션에서 이름, 평균 속성을 추출

img*

  • Join(⋈, R⋈키 속성 r=키 속성 sS )

    두 릴레이션을 합쳐서 새로운 릴레이션을 만드는 연산

    Join의 결과로 만들어진 릴레이션의 차수는 두 차수의 합

    Join의 결과는 교차곱(Cartesian Product)을 수행 후 Select 한 것과 같음

    • ex) 성적⋈이름=이름 명부 : 성적 릴레이션과 명부 릴레이션을 이름 속성을 기준으로 합침
    • 자연 조인 : Join의 조건이 같을 때 동일한 속성이 두 번 나타나 중복된 속성을 제거하여 한번만 표기하는 방법
    • 자연 조인이 성립되려면 두 릴레이션의 속성명과 도메인이 같아야 함

img*

  • Division(÷, R [속성 r ÷ 속성 s] S)

    R ⊃ S인 두 릴레이션이 있을 때, R의 속성이 S의 속성의 값을 모두 가진 튜플에서 S가 가진 속성을 제외한 속성만을 구하는 연산

    • ex) 성적 [평균 ÷ 기준] 기준

img*

  • 일반 집합 연산자

    • 합집합(∪) : 두 릴레이션의 튜플의 합집합. 중복되는 튜플은 제거
    • 교집합(∩) : 두 필레이션의 튜플의 교집합.
    • 차집합(-) : 두 릴레이션의 튜플의 차집합.
    • 교차곱(×) : 두 릴레이션의 튜플들의 순서쌍. 차수(Degree)는 서로 더한 값 카디널리티(Cardinality)는 서로 곱한 값

img*

정규화(Normalization)


관계형 데이터베이스에서 정확성을 더욱 유지하기 위해 스키마를 쪼개는 과정, 데이터베이스의 논리적 설계 단계에서 수행

정규화의 목적
  • 데이터 구조의 안정성 및 무결성을 유지
  • 이상의 발생을 방지 및 자료 저장 공간의 최소화
이상(Anomaly)
  • 사용자의 의도와는 상관없이 데이터가 삽입, 삭제, 갱신되는 현상
정규화 과정
  • 1NF _ 2NF _ 3NF _ BCNF _ 4NF * 5NF
  • 1NF(제1 정규형)

    • 릴레이션에 속한 모든 값들이 원자 값으로만 구성
  • 2NF(제2 정규형)

    • 기본키가 아닌 모든 속성이 기본키에 대하여 완전 함수적 종속을 만족
    • 완전 함수적 종속 : 기본키에 의해서 속성이 결정
    • 부분 함수적 종속 : 기본키의 일부에 의해 속성이 결정
    • 아래와 같이 학번과 과목 코드가 기본키인 릴레이션이 있을 때
    • 과목 점수는 기본키(학번, 과목 코드)를 가지고 알 수 있음 = 완전 함수적 종속
    • 이름은 기본키의 일부(학번)를 가지고 알수 있음 = 부분 함수적 종속

img*

  • 3NF(제3 정규형)

    • 기본키가 아닌 모든 속성이 기본키에 대해 이행적 종속을 만족하지 않음
    • 이행적 종속 : A → B, B → C 일 때 A → C를 만족하는 관계
  • BCNF(Boyce-Codd정규형)

    • 결정자가 모두 후보키
  • 4NF(제4 정규형)

    • 릴레이션에 다치 종속이 성립하는 경우 모든 속성이 함수적 종속 관계를 만족
  • 5NF(제5 정규형)

    • 모든 조인 종속이 후보키를 통해서만 성립

img*

  • 도부이걸다조

반정규화(Denormalization)


정규화된 데이터를 다시 통합, 중복, 분리하는 과정으로 의도적으로 정규화 원칙을 위해, 과도한 정규화로 성능이 떨어졌을 때 실행

반정규화의 종류
  • 테이블 통합

    • 하나의 테이블로 합쳐 사용하는 것이 성능 향상에 도움이 될 경우 수행
    • Not NULL, Default, Check 등의 제약조건을 설계하기 어려움
  • 테이블 분할

    • 테이블을 수평 또는 수직으로 분할
  • 중복 테이블 추가

    • 여러 테이블에서 데이터를 추출해서 사용해야 하거나 다른 서버에 저장된 테이블을 이용해야 하는 경우 수행
  • 중복 속성 추가

    • 조인해서 데이터를 처리할 때 데이터를 조회하는 경로를 단축하기 위해 자주 사용하는 속성을 하나 더 추가

시스템 카탈로그


시스템 카탈로그의 의미
  • 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스
  • 데이터 사전(Data Dictionary)이라고도 함
시스템 카탈로그 저장 정보
  • 시스템 카탈로그에 저장되는 정보를 메타 데이터라고 함
  • 메타 데이터 : 데이터에 대한 설명. 메타 데이터가 모이면 데이터 사전이 됨
  • 메타 데이터의 유형

    • 데이터 베이스 객체 정보 : Table, Index, View 등의 구조 및 통계 정보
  • 사용자 정보

    • 테이블의 무결성 제약 조건 정보
  • 함수, 프로시저, 트리거 등에 대한 정보
시스템 카탈로그의 특징
  • 시스템 테이블로 구성되어 있어 SQL문으로 검색해 볼 수 있음
  • DML(INSERT, DELETE, UPDATE) 문으로 갱신이 불가능